/*

    functions.h - header of the test functions file
    Author Julio Agustin Barrera Mendoza
    Copyright (C) 2009 CINVESTAV-IPN.

    This program is free software; you can redistribute it and/or modify it 
    under the terms of the GNU General Public License as published by 
    the Free Software Foundation; either version 2 of the License, 
    or (at your option) any later version.

    This program is distributed in the hope that it will be useful, 
    but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 
    FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

    You should have received a copy of the GNU General Public License along with this program; 
    if not, write to the Free Software Foundation, Inc., 59 Temple Place, 
    Suite 330, Boston, MA 02111-1307 USA

*/

#ifndef FUNCTIONS_H
#define FUNCTIONS_H

#define PI 3.14159265358979323846

#include <cmath>
#include "evaluationfunction.h"

long double sphere(const Array &value);
long double schwefelOne(const Array &value);
long double rosenbrock(const Array &value);
long double schwefelTwo(const Array &value);
long double rastrigin(const Array &value);
long double ackley(const Array &value);
long double griewank(const Array &value);

long double schafferf6(const Array &value);

long double debOne(const Array &value);
long double debTwo(const Array &value);
long double debThree(const Array &value);
long double debFour(const Array &value);

long double himmelblau(const Array &value);
long double branin(const Array &value);
long double camelBack(const Array &value);
long double shubert(const Array &value);
long double vincent(const Array &value);

long double twoPeakTrap(const Array &value);
long double twoPeakCentral(const Array &value);
long double fivePeakTrap(const Array &value);

long double foxholes(const Array &value);

#endif
